=======================
PuLP How-to
=======================
(Draft)
Date: 2-15-2023
This page includes the following items and is based on `PuLP documentations `_.
- How to install PuLP on `csusb-hpc `_.
- How to run PuLP.
- How to add GUROBI.
.. note::
``GUROBI`` is a licensed program. They offer education licenses for free, but one needs to create an [account](https://www.gurobi.com/) and get the license on a campus network.
Installation
-------------
If it is not already installed, use the following command to install PuLP via [PyPI](https://pypi.org/project/PuLP/) and run a check.
.. code-block::
pip install https://pypi.org/project/PuLP/
pulptest
Instead, one can install it in JupyterLab as follows.
.. code-block::
%pip install pulp
import pulp as pl
pl.pulpTestAll()
Multi-threads
--------------
PuLP utilized multiple cores via the `solvers' thread option `_.
.. code-block::
cbc_solver = PULP_CBC_CMD(threads=4)
Change the number of threads to the number of cores requested.
.. note::
In the test, 32 cores seemed to be the most reasonable as the number of trees becomes smaller. Also, it did not use much RAM. So, 16 GB should be a safe choice.
.. note::
When this page was written, according to the web search, there was no practical way to use GPUs for PuLP. See this article https://stackoverflow.com/questions/73096443/using-colab-gpu-for-pulp-python.
GUROBI solver
--------------
In our testing, GUROBI solver caused an error with ``pulptest``. As a default, only package paths are added into the ``stack-pulp-test``. To install GUROBI, simply run
.. code-block::
conda install gurobi=10.0.1
Or in JupyterLab,
.. code-block::
%conda install gurobi=10.0.1
# %ensures that it is installed in the right conda environment.
To use GUROBI on the server, one needs ``WSL`` license. It supports up to 8 threads. (It is free for educational use.) Once you have the `gurobi.lic` file, please it into your home folder (likely ``~\jobyan\``).
.. code-block::
gurobi_solver = GUROBI_CMD(threads=8)